package com.hust.edu.cn.configuration;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2WebMvc;

@Configuration
@EnableSwagger2WebMvc
public class Knife4jConfiguration {

    @Bean(value = "defaultApi2")
    public Docket defaultApi2() {
        Docket docket = new Docket(DocumentationType.SWAGGER_2) // 选择swagger2版本
                // 接口文档的基本信息
                .apiInfo(new ApiInfoBuilder()
                        .title("接口项目 后台服务API接口文档")
                        .description("服务相关接口(knife4j)")
                        // 服务Url(网站地址)
                        .termsOfServiceUrl("http://localhost:8080/")
                        .contact(new Contact("yujian",null,"M201970066@hust.edu.cn"))
                        .version("1.0")
                        .build())
                // 分组名称，不配置的话，默认值为：default
                .groupName("2.X版本")
                .select()
                // 这里指定Controller扫描包路径(项目路径也行)
                // 方式一：配置扫描：所有想要在swagger界面统一管理的接口，都必须在此包下，下面选择这种方式
                // 方式二：只有当方法上有@ApiOperation注解时，才能生成对应的接口文档
                .apis(RequestHandlerSelectors.basePackage("com.hust.edu.cn.controller"))
                // 路径使用any风格(指定所有路径)
                .paths(PathSelectors.any())
                .build();
        return docket;
    }
}
